@@ -102,6 +102,7 @@ module Agents |
||
102 | 102 |
memory.to_json |
103 | 103 |
end |
104 | 104 |
end |
105 |
+ context["unescapeHTML"] = lambda { |a, x| CGI.unescapeHTML(x) } |
|
105 | 106 |
|
106 | 107 |
context.eval(code) |
107 | 108 |
context.eval("Agent.#{js_function}();") |
@@ -158,6 +159,10 @@ module Agents |
||
158 | 159 |
doError(message); |
159 | 160 |
} |
160 | 161 |
|
162 |
+ Agent.unescapeHTML = function(html) { |
|
163 |
+ return unescapeHTML(html); |
|
164 |
+ } |
|
165 |
+ |
|
161 | 166 |
Agent.check = function(){}; |
162 | 167 |
Agent.receive = function(){}; |
163 | 168 |
JS |
@@ -162,6 +162,20 @@ describe Agents::JavaScriptAgent do |
||
162 | 162 |
end |
163 | 163 |
end |
164 | 164 |
|
165 |
+ describe "unescaping HTML" do |
|
166 |
+ it "can unescape html with this.unescapeHTML in the javascript environment" do |
|
167 |
+ @agent.options['code'] = 'Agent.check = function() { this.createEvent({ message: this.unescapeHTML(\'test "escaping" <characters>\'), stuff: { foo: 5 } }); };' |
|
168 |
+ @agent.save! |
|
169 |
+ expect { |
|
170 |
+ expect { |
|
171 |
+ @agent.check |
|
172 |
+ }.not_to change { AgentLog.count } |
|
173 |
+ }.to change { Event.count}.by(1) |
|
174 |
+ created_event = @agent.events.last |
|
175 |
+ expect(created_event.payload).to eq({ 'message' => 'test "escaping" <characters>', 'stuff' => { 'foo' => 5 }}) |
|
176 |
+ end |
|
177 |
+ end |
|
178 |
+ |
|
165 | 179 |
describe "getting incoming events" do |
166 | 180 |
it "can access incoming events in the JavaScript enviroment via this.incomingEvents" do |
167 | 181 |
event = Event.new |